var express = require('express');
var router = express.Router();
const moment = require('moment');
const AccountModel = require('../../models/AccountModel');
//console.log(moment('2023-02-24').toDate())//.toDate()可以将对象转成日期对象
//格式化日期对象
//moment(new Date())会创建一个属于自己的对象
//console.log(moment(new Date()).format('YYYY-MM-DD'))
//记账本列表
router.get('/account', function(req, res, next) {
  AccountModel.find().sort({time:-1}).then((data)=>{
    //返回json格式数据
    res.json({
        //响应编号
        //code:'20000',
        //另一种响应编号4个0，或6个0，第三方接口，如微信一样，0表示成功，非0表示失败
        code:'0000',
        //响应信息
        msg:'读取成功',
        data:data
    })
  }).catch((result)=>{
    //状态码不用给，因为接口在返回结果时状态信息已经标识在code里，在json的code里设置一个对象的编号就可以了
    res.json({
        code:'1001',
        msg:'读取失败~~',
        data:null
    })
    return;
  })
});
//新增记录
router.post('/account',(req,res)=>{
  //获取请求体数据
  console.log(req.body);
  //新time覆盖旧time
  AccountModel.create({...req.body,time:moment(req.body.time).toDate()}).then((data)=>{
    res.json({
        code:'0000',
        msg:'创建成功',
        data:data
    })
  }).catch((result)=>{
    res.json({
        code:'1002',
        msg:'创建失败',
        data:null
    })
    return;
  })
})
//删除记录
router.delete('/account/:id',(req,res)=>{
  //获取params的id参数
  let id = req.params.id;
  //删除
  AccountModel.deleteOne({_id:id}).then((data)=>{
    //提醒
    res.json({
        code:'0000',
        msg:'删除成功',
        data:{}
    })
  }).catch((result)=>{
    res.json({
        code:'1003',
        msg:'删除账单失败',
        data:null
    })
    return;
  })
})
//获取单个账单信息
router.get('/account/:id',(req,res)=>{
    let id = req.params.id;
    AccountModel.findById(id).then((data)=>{
        res.json({
            code:'0000',
            msg:'读取成功',
            data:data
        })
    }).catch((result)=>{
        res.json({
            code:'1004',
            msg:'读取失败~~',
            data:null
        });
        return;//这里可以不写return了，因为这是最后一条语句了
    });
})
//更新单个账单信息
router.patch('/account/:id',(req,res)=>{
    let {id} = req.params;
    AccountModel.updateOne({_id:id},req.body).then((data1)=>{
        //再次查询数据库，获取单挑数据,这样的写法就形成了回调地狱。代码中的回调函数套回调函数，这种回调函数中嵌套回调函数的情况就叫做回调地狱。
        AccountModel.findById(id).then((data2)=>{
            res.json({
                code:'0000',
                msg:'读取成功',
                data:data2
            })
        }).catch((resu)=>{
            res.json({
                code:'1004',
                msg:'读取失败',
                data:null
            })
        })
    }).catch((result)=>{
        res.json({
            code:'1005',
            msg:'更新失败',
            data:null
        })
    })
})
module.exports = router;
